1. Field of the Invention
The present invention relates to load balancing print jobs across multiple printing devices. In particular, the present invention relates to systems and methods for providing a time-to-availability attribute for use in a variety of printing environments to dynamically manage the load balancing of print jobs across multiple printing devices, wherein the attribute is supported on the client side, on the server side, or by printer firmware, and wherein the attribute is implemented in a printer driver, a print processor, a spooler, a print server, a printer firmware spooler, or another component of a print subsystem.
2. Background and Related Art
When a user sends a print job to a specific printer and that printer is busy, the user is typically required to wait for a period of time prior to the printer being able to process the print job that the user sent. This required waiting period occurs even when another compatible printer on the network may be available. While a number of techniques have attempted to address the problem, none have solved the problem completely.
For example, one attempt to address the problem includes a printing environment wherein the user is able to split a print job across several networked printers. This process is typically referred to as employing a “printer cluster,” where each printer device prints a portion of the print job sent by the user. While this alternative has been made available, it also presents various problems for the user. For example, if one or more of the printers of the printer cluster are busy, the user may be required to wait a longer period of time for the entire print job to be processed than would be otherwise expected.
Another attempt to address the problem of having to wait for print jobs to be processed is through the use of “printer pooling.” On some operating systems, the user is able to group a set of compatible printers together as a printer pool. Once the printer pool is established, print jobs are sent to printers of the printer pool in a round robin fashion. For example, if three printers are in the printer pool and six print jobs are sent for processing, a first print job would be sent to a first printer of the printer pool, a second print job would be sent to a second printer of the printer pool, a third print job would be sent to a third printer of the printer pool, a fourth print job would be sent to the first printer of the printer pool, a fifth print job would be sent to the second printer of the printer pool, and a sixth print job would be sent to the third printer of the printer pool. While this technique is available, it suffers for a variety of reasons, including that the round robin assigning of print jobs to printers of a printer cluster can still cause a log jam to occur that requires one or more users to wait for the processing of their print job.
In another technique, new attributes are created for the number of jobs at a given printer and the maximum number of jobs that can be queued to a given printer. While this technique improves the printer pooling method by maintaining an even balance of jobs across a group of printers, it still suffers in a variety of manners, including that the new attributes can still cause a log jam to occur that requires one or more users to wait for the processing of their print job.
In another technique, the availability of each printer in a printer group (i.e., printer cluster) is considered to address the problem. Each printer and/or printer queue is queried to obtain the status of the printer and preferences are given to the printers that are the most available at a current moment. While this technique is available, the technique can still cause a logjam to occur that requires one or more users to wait for the processing of their print job.
In another technique, the printing devices are queried for their pages per minute speeds and preference is given to the faster printers of otherwise equal availability. While an improvement over other techniques, this technique still suffers in that it is assumed that each printer runs at its maximum pages per minute speed and does not take into account that the pages per minute speed typically varies depending on whether the printer data is rasterized, on the amount of data per page, and on the sheet assembly options, such as duplex.
Thus, while techniques currently exist that are used in association with processing a print job, challenges still exist, including causing a log jam to occur among print jobs that requires one or more users to wait for the processing of their print job. Accordingly, it would be an improvement in the art to augment or even replace current techniques with other techniques.